/**
 * Created by gx on 15/12/7.
 * {"mopai"=>"0/1"}
 {"mopai"=>"0/1,pai,[chi,peng,gang,ting,hu,qi]"}
 {"chupai"=>"0/1,pai"}
 {"chi"=>"pai"}
 {"peng" => "pai"}
 {"gang" => "pai"}{"gang" => "pai,mopai"}
 {"ting" => "pai"}
 {"hu" => ""}{"hu" => "fangqiang,zimo"}
 {"hailao"=>"[0,0,0,0,]"}
 {"duihua"=>"[0,0,0,0,]"}
 {"suanfan"=>"[0,0,0,0,]"}
 {"bibei"=>"[0,0,0,0,]"}
 {"defen"=>"[0,0,0,0,]"}

 {"block":"","hand":""}
 */
//进入房间cmd

gdmj_tuidaohu.MJ_Data = {
    isMute : false,
    m_uiGameLayer : null,
    m_CurrentAction : null,
    websocketManager: null,
    //房间倍率
    m_lastRecvTime : 0,

    YuYinChatText:[
        "xx",
        "你太牛了",
        "哈哈，手气正好",
        "快点出牌噢",
        "今天真高兴",
        "这个吃的好",
        "你放炮我不胡",
        "你家是开银行的吧",
        "不好意思，我有事先走一步了",
        "你的牌打的太好啦",
        "大家好，很高兴见到各位",
        "怎么又断线了啊，网络怎么这么差啊"
    ],
    ctor : function(){
        this.m_lastRecvTime = 0;
    },

    connected : function(){
        var that=this;
        if(that.websocketManager) {
            return that.websocketManager.connected();
        }else{
            return false;
        }
    },
    InitData: function () {

        this.isMute = false;

        this.m_bAllowEnterRoom = false;

        this.m_lastRecvTime = 0;

        this.websocketManager=dwc.DT_Data_Login.websocketManager;
        this.websocketManager.AddListener(this,this.OnWebSocketMessage);
    },
    tryJoin : function()
    {
        this.SendJoin();
    },
    IsAllowEnterRoom : function(){
        if(this.connected())
        {
            this.m_bAllowEnterRoom = true;
        }    
        return this.m_bAllowEnterRoom;
    },

    GetCurrentAction : function(){
        return this.m_CurrentAction;
    },
    OnWebSocketMessage: function (_msg) {
        var that=this;
        that.m_lastRecvTime = new Date().getTime();
        var jsonObj = _msg;
        var nCommand = _msg.command;
        if(nCommand == "mjmsg"){//开始游戏，发送押注信息
            var vecArg = _msg.mjmsg.split("|");
            if (vecArg[0] == "createroom") {

                //dwc.MJZB_Data.SendSit();
            }
            if (vecArg[0] == "joinroom") {
                var uid = parseInt(vecArg[1]);
                var cbResult = parseInt(vecArg[2]);
                if(cbResult == 0)
                {
                    if(uid == dwc.Myself.GetData().GetUid())
                    {
                        if(!this.m_uiGameLayer) {
                            cc.director.runScene(new gdmj_tuidaohu.mj_uiGameScene());
                        }
                    }
                }
            }
            if (vecArg[0] == "sit") {

            }
            if (this.m_uiGameLayer){
                this.m_uiGameLayer.OnWebSocketMessage(_msg);
            }
        }else if(nCommand == "onclose") {

        }else
        {
            //cc.log("other command = "+nCommand.toString());
        }
    },
    VecStr2Int : function(vec){
        var result = [];
        for(var i = 0;i<vec.length;i++)
        {
            result[i] = parseInt(vec[i])
        }
        return result;
    },

    SendMessage : function(__cmd, __data){
        if(this.websocketManager){
            this.websocketManager.Send(__cmd, __data);
        }
    },
    SendHeart: function (_level) {
        this.SendMessage("heart","heart");
        this.SendMessage("mjmsg","heart|0");
    },
    SendConnect : function () {
        var data = "connect|0";
        this.SendMessage("mjmsg", data);
    },
    //发送投注信息
    SendJoin : function () {
        var data = "join|0";
        this.SendMessage("mjmsg", data);
    },
    //发送离开信息
    SendLeave : function () {
        var data = "leave|0";
        this.SendMessage("mjmsg", data);
    },
    SendCreateRoom : function(vecParam)
    {
        var data = "createroom|0|" + vecParam.join(",");
        this.SendMessage("mjmsg", data);
    },

    SendJoinRoom : function(room_id)
    {
        var data = "joinroom|" + room_id;
        this.SendMessage("mjmsg", data);
    },
    //发送准备信息
    SendDismissRoom : function () {
        var data = "dismissroom|0" ;
        this.SendMessage("mjmsg", data);
    },
    //
    SendTryDismissRoom : function () {
        var data = "try_dismissroom|0" ;
        this.SendMessage("mjmsg", data);
    },
    SendAgreeDismissRoom : function () {
        var data = "agree_dismissroom|0" ;
        this.SendMessage("mjmsg", data);
    },
    //
    SendRefuseDismissRoom : function () {
        var data = "refuse_dismissroom|0" ;
        this.SendMessage("mjmsg", data);
    },
    SendCancelDismissRoom : function () {
        var data = "cancel_dismissroom|0" ;
        this.SendMessage("mjmsg", data);
    },
    //发送准备信息
    SendReady : function () {
        var data = "ready|0" ;
        this.SendMessage("mjmsg", data);
    },
    //发送离开信息
    SendBiaoQing : function (index) {
        var data = "biaoqing|" + index ;
        this.SendMessage("mjmsg", data);
    },
    //发送离开信息
    SendYuYin : function (index) {
        var data = "yuyin|" + index ;
        this.SendMessage("mjmsg", data);
    },
    //发送普通消息
    SendTextMsg : function (msg) {
        var data = "text|" + msg ;
        this.SendMessage("mjmsg", data);
    },
    SendChat : function (index) {
        var data = "chat|" + index ;
        this.SendMessage("mjmsg", data);
    },
    SendVoice : function (seconds,url) {
        var data = "voice|" + seconds + "|" + url ;
        this.SendMessage("mjmsg", data);
    },
    //发送离开信息
    SendRobot : function () {
        var data = "robot|0" ;
        this.SendMessage("mjmsg", data);
    },
    SendMoMaPai : function(byHuanMj)
    {
        var data = "momapai|" + byHuanMj.join(",");
        this.SendMessage("mjmsg",data);
    },

    SendMoPai : function(byCheatMj)
    {
        var data = "mopai|0|" + byCheatMj;
        this.SendMessage("mjmsg",data);
    },
    SendChuPai : function(byMj,bTing)
    {
        var data = "chupai|0|" + byMj + "|" + bTing;
        this.SendMessage("mjmsg",data);
    },
    SendAIAction : function()
    {
        var data = "aiaction|0";
        this.SendMessage("mjmsg",data);
    },
    SendCuoPai : function(byCheatMj)//先不处理搓牌
    {
        var data = "cuopai|1|" + byCheatMj;
        this.SendMessage("mjmsg",data);
    },
    SendChiPai : function(byMj,byMode)
    {
        var data = "chipai|" + byMj + "|" + byMode;
        this.SendMessage("mjmsg",data);
    },
    SendPengPai : function(byMj)
    {
        var data = "pengpai|" + byMj ;
        this.SendMessage("mjmsg",data);
    },
    SendGangPai : function(byMj,byMode)
    {
        var data = "gangpai|" + byMj + "|" + byMode;
        this.SendMessage("mjmsg",data);
    },
    SendHuPai : function()
    {
        var data = "hupai|0";
        this.SendMessage("mjmsg",data);
    },
    SendGuoPai : function()
    {
        var data = "guopai|0";
        this.SendMessage("mjmsg",data);
    },
};

/**
 * /*
 [12,12,27,27,27,28,28,28,29,29,29,30,30,30],//DA_SI_XI
 [12,13,14,27,27,27,28,28,28,29,29,29,30,30],//XIAO_SI_XI
 [10,10,12,13,14,31,31,31,32,32,32,33,33,33],//DA_SAN_YUAN
 [27,27,27,28,28,28,29,29,29,31,31,31,32,32],//ZI_YI_SE
 [10,10,10,12,12,12,18,18,18,24,24,24,25,25],//SI_AN_KE
 [10,10,10,11,11,11,12,12,12,13,13,13,18,18],//SI_LIAN_KE,SI_GANG_ZI
 [0,8,9,17,18,26,27,28,29,30,31,32,33,33],//GUO_SHI_WU_SHUANG
 [9,9,9,9,10,11,12,13,14,15,16,17,17,17],//JIU_LIAN_BAO_DENG
 [0,0,0,8,8,8,9,9,9,17,17,17,18,18],//QING_LAO_TOU
 [19,19,19,20,20,20,21,21,21,23,23,23,32,32],//LV_YI_SE
 [19,19,19,20,20,20,21,21,21,23,23,23,31,31],//WAN_LV_YI_DIAN_HONG
 [18,18,18,22,22,22,24,24,24,26,26,26,31,31],//HONG_KONG_QUE
 [4,4,4,5,5,5,6,6,6,7,7,7,8,8],//BAI_WAN_SHI
 [0,1,2,3,4,5,6,7,8,27,27,27,30,30],//DONG_BEI_XIN_GAN_XIAN
 [10,10,11,11,12,12,13,13,14,14,15,15,16,16],//DA_CHE_LUN
 [1,2,3,4,5,6,10,10,19,20,21,22,23,24],//SHUANG_LONG_QIANG_ZHU
 */
/*
 推倒胡		立直		双立直		一发
 平胡		门清		扛上开花	断幺九
 役牌		一杯口		二杯口		七对子
 对对胡		纯全带幺	混全带幺	混老头
 清一色		混一色		一气通贯	小三元
 三色同顺	一色三顺	三色同刻	三暗刻
 三连刻		三杠子		海底捞月	河底摸鱼


 天胡		地胡		人胡		大四喜
 小四喜		大三元		字一色		四暗刻
 四连刻		四杠子		国士无双	九莲宝灯
 清老头		绿一色		万绿一点红	红孔雀
 百万石		东北新干线
 */
/*
 　　1.立直：自己在听牌时宣告立直，并成功和牌（有关立直的说明已在前面叙述）。1番。★
 　　2.一发：立直后自己还未摸牌，就有对手打出的牌被自己食和，或立直后自己摸到的第一张牌即告自摸。但在立直与和牌之间有人吃、碰、杠，则不能算“一发”。1番。★★
 　　3.双立直：也叫“两立直”，配牌后自己打出第一张牌时即宣告立直。但在宣告立直之前有人吃、碰、杠（包括自己暗杠），则不能算“双立直”（但可以算“立直”）。2番（不计立直）。★★★☆
 　　4.役牌：自风的刻子（例如东家手中有“东”的刻子），或场风的刻子（例如南场时，手中有“南”的刻子），或三元牌的刻子（“中、发、白”的刻子）。1番。如果是连风（自风与场风相同，例如东场时，东家手中有“东”的刻子），这样的一组刻子计2番。★
 　　5.平和：所有的面子均为顺子，没有刻子，听牌形式为两面听牌（不能是嵌张、边张），另外一对将牌（在听牌时，将牌已经以对子的形式出现）不能为自风、场风、中、发、白，必须是“门前清”状态（否则不承认）。1番。★
 　　6.断幺九：所有手牌均为中张牌，没有幺九牌。1番（部分规则中，“断幺九”必须是“门前清”状态，否则不承认）。★
 　　7.门前清自摸：手牌为“门前清”状态（立直与否均可），以自摸的方式和牌。简称“自摸”（这只是简称而已，并不表示任何情况下的自摸和牌都可以算番）。1番。☆
 　　8.一杯口：手牌中有同色同数的两组顺子，也就是我们讲的“一般高”、“一色二顺”，必须是“门前清”状态（否则不承认，初学者容易忽视这一点）。1番。★★
 　　9.二杯口：手牌中有2个同色同数的两组顺子（即含有两组“一杯口”），也就是我们讲的“二色二顺”，可以（不是必须）有四张相同的牌，必须是“门前清”状态（否则不承认）。3番（不计一杯口、七对子)。★★★★★
 　　10.七对子：本牌型为不符合“一对将牌”加“四组面子”的特殊牌型，构牌方式为七个不同的对子（不能有四张相同的牌）。2番（部分规则计1番）。★★
 　　11.对对和：与“平和”完全相反，所有的面子均为刻子，没有顺子，也就是我们讲的“碰碰和”。2番。★★
 　　12.三色同顺：手牌中有同数字但不同花色的三组顺子（例如手牌中同时有四五六万、四五六筒、四五六条三组顺子）。“门前清”状态计2番，否则计1番。★☆
 　　13.三色同刻：手牌中有同数字但不同花色的三组刻子（例如手牌中同时有八万刻子、八筒刻子、八条刻子）。2番。★★★★★
 　　14.三暗刻：手牌中有三组暗刻（暗杠也可以算暗刻）。2番。★★★
 　　15.三杠子：手牌中有三组杠子。2番。★★★★★
 　　16.混全带幺：手牌中的每组顺子、刻子、将牌均含有幺九牌，且手牌中必须有字牌，简称“全带幺”。“门前清”状态计2番，否则计1番。★★
 　　17.纯全带幺：手牌中的每组顺子、刻子、将牌均含有老头牌。“门前清”状态计3番，否则计2番。★★★
 　　18.混老头：与“断幺九”完全相反，所有手牌均为幺九牌（必须同时含有老头牌与字牌），没有中张牌，构成“对对和”或“七对子”的形式。2番（不计混全带幺，可计对对和、七对子。另外，部分规则中，“混老头”如果是“门前清”状态则计3番）。★★★
 　　19.混一色：手牌由同一种花色的牌加上字牌组合而成。“门前清”状态计3番，否则计2番。★★
 　　20.清一色：手牌由同一种花色的牌组合而成。“门前清”状态计6番，否则计5番。★★★
 　　21.小三元：手牌中有“中、发、白”三种三元牌组成的两组刻子及一对将牌。2番（可计两组三元牌的“役牌”）。★★★★
 　　22.一气通贯：手牌中有同花色的“一二三、四五六、七八九”三组顺子，也就是我们讲的“一条龙”。“门前清”状态计2番，否则计1番。★★
 　　23.岭上开花：杠牌后从岭上牌补进的一张牌，而该牌刚好形成自摸，也就是我们讲的“杠上开花”。另外，三人麻将中，如果“北”作为花牌（类似中国麻将的“春夏秋冬梅兰竹菊”），亮出后同样要从岭上牌补进一张牌，如果该牌形成自摸，同样可以算“岭上开花”。1番。★★★
 　　24.海底捞月：也叫“海底摸月”，自己摸牌后山牌只剩14张王牌（即将荒牌流局），而自己刚好自摸（但如果最后一张牌是从岭上牌摸进，这种情况下一般只算岭上开花，而不算海底捞月）。1番。★★★
 　　25.河底捞鱼：荒牌流局前对手打出的最后一张牌刚好被自己食和（但如果这名对手所摸的最后一张是从岭上牌摸进，这种情况下一般不算河底捞鱼）。1番。★★★
 B.役满牌型
 　　1倍役满相当于13番，2倍役满相当于26番，依次类推。可重复累加（役满的倍数用来相加，而不是相乘），计多倍役满（多种役满牌型叠加称为“复合役满”），不再计算普通牌型的番数（即使手牌所符合的普通牌型番数能够累加至13番，也不能再增加1倍役满）。
 　　1.天和：庄家起手配牌后，自己抓到的第一张牌便形成自摸和牌（如果庄家配牌14张，则必须是配完牌后立即和牌才能算“天和”，同样算庄家自摸）。1倍役满（部分规则计2倍役满）。★★★★★☆
 　　2.地和：闲家起手配牌后，自己抓到的第一张牌便形成自摸和牌，但如果在此之前有人（包括自己）吃、碰、杠，便不算“地和”。1倍役满。★★★★★☆
 　　3.大三元：手牌中有“中、发、白”三种三元牌组成的三组刻子。1倍役满。★★★★
 　　4.小四喜：手牌中有“东、南、西、北”四种风牌组成的三组刻子及一对将牌。1倍役满。★★★★☆
 　　5.大四喜：手牌中有“东、南、西、北”四种风牌组成的四组刻子。2倍役满。★★★★★
 　　6.四暗刻：手牌中有四组暗刻（暗杠也可以算暗刻）。如果是双碰听牌（听牌时，手牌为三组暗刻加两个对子）则计1倍役满（必须自摸，如果食和则只算普通牌型三暗刻、对对和），如果是单骑听牌（听牌时，手牌为四组暗刻加一张单张，又称“四暗刻单骑”）则计2倍役满（食和与自摸均可）。★★★★☆
 　　7.国士无双：本牌型为不符合“一对将牌”加“四组面子”的特殊牌型，构牌方式为“一万、九万、一筒、九筒、幺鸡、九条、东、南、西、北、中、发、白”组成（即拿齐13种幺九牌），除了用作做将牌的一对外，其它各种牌只能有1个，也就是我们讲的“十三幺”。如果先有一对将牌，单听一种牌，计1倍役满。如果听牌时的牌型为13种幺九牌各1张，这样可以听13种牌，只要见到幺九牌就可以和牌（又称“国士无双十三面”），计2倍役满。★★★★☆
 　　8.九莲宝灯：首先必须是“门前清”状态，然后和牌时的构牌方式为“清一色”（部分规则中必须是万的清一色）中分别有3个数字为“一”“九”的牌，数字为“二、三、四、五、六、七、八”的牌各1张，再加任何一种同花色的牌。如果听牌时即满足“3个一、3个九，二三四五六七八各1张”，这样可以听9种牌，只要见到同花色的牌就可以和牌（又称“纯正九莲宝灯”），计2倍役满。如果听牌时不满足“3个一、3个九，二三四五六七八各1张”，但在和牌时仍满足九莲宝灯的构牌方式（比如手牌为清一色的“一一一二三三四五六八九九九”，用“七”来和牌），也算九莲宝灯，但只计1倍役满。★★★★★
 　　9.字一色：所有手牌均为字牌，构成“对对和”或“七对子”的形式。1倍役满。★★★★★
 　　10.清老头：所有手牌均为老头牌，构成“对对和”的形式。1倍役满。★★★★★
 　　11.绿一色：由“二条、三条、四条、六条、八条、发”组成的和牌形式（不必6种牌全部具备）。因为这几种牌的颜色为不掺杂其它颜色的纯绿色故名“绿一色”。1倍役满（部分规则中，无“发”的绿一色称为“纯绿一色”，计2倍役满。也有部分规则中，绿一色必须带“发”，否则只算普通牌型清一色、断幺九）。★★★★★
 　　12.四杠子：手牌中有四组杠子。因其和牌后共有牌18张，故又称“十八罗汉”。1倍役满（部分规则计2倍役满）。★★★★★★
 C.需要商定的牌型
 　　同中国一样，在日本，不同地方的麻将也有不同的规则。前面所说的牌型是普遍存在的，下面所说的牌型虽然也是比较常见的，但是需要在制定规则时说明是否使用，也就是说下面的任何一种牌型都有不被规则所承认的可能，所以最好事先了解规则。
 　　普通牌型
 　　4.三连刻：手牌中有同花色且数字相连的三组刻子。2番。★★★★
 　　5.一色三顺：手牌中有同色同数的三组顺子。2番（“门前清”状态时，不计一杯口。有的规则中，“一色三顺”如果不是“门前清”状态则只计1番。如果不承认“一色三顺”，则在“门前清”状态下做出此牌型时，可以算“一杯口”）。★★★★
 　　役满牌型
 　　1.人和：闲家起手配牌后还未抓牌就食和，但如果在此之前有人（包括自己）吃、碰、杠，便不算“人和”（但如果杠牌被抢，则该杠牌不成立，因此闲家未抓牌就进行国士无双抢暗杠，而且此次暗杠之前没有其它的吃、碰、杠，则可以同时算“人和”与“国士无双”。人和不可能抢加杠）。1倍役满（部分规则只算满贯或倍满，见点数计算部分）。★★★★★☆
 　　2.大车轮：构牌方式为“二筒、三筒、四筒、五筒、六筒、七筒、八筒”各两张，必须是“门前清”状态（否则只算普通牌型清一色、断幺九）。1倍役满（部分规则计2倍役满）。★★★★★
 　　4.四连刻：手牌中有同花色且数字相连的四组刻子。1倍役满。★★★★
 　　5.一色四顺：手牌中有同色同数的四组顺子。1倍役满（如果不承认“一色四顺”，则在“门前清”状态下做出此牌型时，如果仍算作四组顺子，则可以算普通牌型“二杯口”）。★★★★★☆
 　　6.百万石：首先必须是万的清一色，然后所有的牌的数字加起来等于或大于100万（“一万”算作10000，“二万”算作20000，“三万”算作30000，依次类推，最后把所有的数字相加）。1倍役满（部分规则中，牌的数字加起来刚好等于100万的情况称为“纯正百万石”，计2倍役满。也有部分规则中，“百万石”必须是牌的数字加起来大于100万，否则只算普通牌型清一色）。★★★★★
 　　7.红孔雀：与“绿一色”相反，由“幺鸡、五条、七条、九条、中”5种牌构成的“对对和”形式。1倍役满。★★★★★☆
 　　8.东北新干线：带有“东”的刻子并以“北”作将牌的“一气通贯”，或者是带有“北”的刻子并以“东”作将牌的“一气通贯”（有的规则中规定必须是条的“一气通贯”）。1倍役满（部分规则中，“东北新干线”必须是“门前清”状态，否则只算普通牌型混一色、一气通贯）。★★★★☆
 */